{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 算法的闭环"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 算法方法论\n",
    "人工智能=人工+智能\n",
    "\n",
    "从高层往底层走！\n",
    "\n",
    "#### 没有人工就没有智能\n",
    "1. 替代人工不存在的\n",
    "2. 将会替代部分人类的工作\n",
    "3. 人类的双手从频繁低效的劳动中解脱出来，而从事更加高效的工作\n",
    "    1. 数据标注(非常不智能)\n",
    "4. 就是你手上的工具，提线木偶，只不过工具升级了\n",
    "    1. 发个指令，帮你干一天\n",
    "5. 恐慌是因为你不了解，人总会畅想\n",
    "6. 来源于大数据\n",
    "\n",
    "<br>\n",
    "\n",
    "#### 没有数据没有算法\n",
    "1. 没有数据没有机器学习\n",
    "2. 所有算法都来自数据\n",
    "3. 算法不是核心，没有数据算法什么也不是\n",
    "\n",
    "<br>\n",
    "\n",
    "#### 做任何事情，优先了解它的框架，了解他的结构后，然后再去了解细节\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Diss链\n",
    "老板肯定是站在销售这边说话的！ 因为它能变钱 销售\n",
    "\n",
    "销售->产品->研发->算法->数据-背锅-搞数据\n",
    "\n",
    "算法工程师，萌芽阶段 工业化生产(产出！)\n",
    "- 狭义：拿来数据——出模型\n",
    "  - 分数要高\n",
    "  - 模型要快\n",
    "- 广义：数据-算法-性能-SDK\n",
    "\n",
    "SDK 上线产品 \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 算法的闭环\n",
    "### 数据采集(从哪里来？)\n",
    "1. 网上爬取 Scrapy、phatom.js\n",
    "    1. 人脸识别，已经10亿量级别，百万数据就是个渣，学不出什么东西，千万学到一点有用的东西！\n",
    "    2. 应用商业环境，1/100万的错误率\n",
    "    3. 第一个担心的是数据，算法满地都是！\n",
    "2. 数据业务\n",
    "    1. Airflow定时任务，类似cron\n",
    "\n",
    "### 数据仓库\n",
    "1. 数据清洗\n",
    "    1. 清洗数据\n",
    "    2. 处理数据\n",
    "    3. 如何做特征工程，如何把数据做出优秀的训练集\n",
    "    4. 影响后面机器学习应用，烂的数据集效果不好，质量不高\n",
    "    5. ETL--Extract Transform Load\n",
    "        1. 茫茫数据里面，把有用的数据抽取处出来，转化为所需要的数据格式，载到数据仓库的过程\n",
    "        2. pandas， py的SQL\n",
    "        3. Numpy\n",
    "        4. Map-Reduce\n",
    "2. 数据库(数据仓库)\n",
    "    1. Mysql/Redis/mongo(吃内存厉害)  --X 都不用！\n",
    "    2. Mysql/Postgres\n",
    "    3. Hive 10亿辆车 聚类  --> 最后交给MapReduce做\n",
    "    4. OLAP --HMASE\n",
    "    5. spark\n",
    "3. 数据集市/数据挖掘/数据标注(50%时间)\n",
    "    1. 如何生成我需要的精细的、优质的数据\n",
    "    2. 数据挖掘\n",
    "        1. 数据可视化\n",
    "        2. 数据统计\n",
    "        3. 特征工程\n",
    "    3. 数据标注 (80%是监督学习/无监督学习也是为了监督学习)\n",
    "        1. 自动化标注（没有人工就没有数据）\n",
    "        2. 标注平台、节省人力\n",
    "        3. 聚类等自动化\n",
    "            1. 几乎不存在任何`通用算法`做自动化标注，一定是特定算法特定标注\n",
    "            2. 算法人员花大量时间在标注上！\n",
    "            3. 再标再跑\n",
    "            4. 合理高效的标注\n",
    "4. 评测集合数据集的准备(数据Team的产出标准)\n",
    "    1. Train Set——教科书、Validata-在线测验(帮助学习) | Test—期末考试(不是学习、来靠靠你，不混到前面！)\n",
    "        1. Test 产品的数据  Diss算法、不要混到前面、否则是伪集成\n",
    "    2. 一开始不是问题，后来就成问题了\n",
    "    2. 数据集市库、同一份数据，不同人使用！！\n",
    "    3. 我的数据在哪里！\n",
    "5. 模型的设计/Loss函数的设计/训练方法的设计\n",
    "    1. Gradient Decent 预测数值，现实与理想的差距\n",
    "        1. y^ y 的差距？\n",
    "        2. 学习的目的，拉小差距！\n",
    "        3. 反省过程，感知怎么做？\n",
    "    2. 分步训练/分段训练\n",
    "        1. 分布式训练\n",
    "6. 模型的验证\n",
    "    1. 训练完不知道结果，等于没训练\n",
    "        1. 分类：PR曲线、ROC、F-Score、mAP(加权平均数)\n",
    "        2. 回归：均方差\n",
    "        3. 精确度：precision=1-错误率\n",
    "        4. 召回率：Recall=1-漏报率\n",
    "            1. 冲突关系！ \n",
    "7. 模型的集成、优化\n",
    "    1. SDK的开发\n",
    "    2. 模型压缩 -- mimic小孩学大人！\n",
    "8. 构建应用\n",
    "9. 数据采集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据采集\n",
    "数据采集—> 数据清洗—>数据仓库—>数据挖掘/特征工程—>数据标注—>训练集、评测集的制作—>机器学习—>模型评测—>数据采集\n",
    "![](images/data-scientist-roadmap.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 好的算法工程师，在数据上有很好的见识\n",
    "- 有数据才能有算法\n",
    "- 机器永远是人的提线偶，人永远有根线去约束机器去干吗的！\n",
    "- 数据像流沙、洪水，不去治理它，会跑得`满地都是`\n",
    "    - 溅得满地都是、床上、墙上\n",
    "    - 一个算法人员离职时，会出现非常大的毛病\n",
    "- 神经网络，基本上就是矩阵之间的互相乘！并行浮点型\n",
    "- 最终：高分的模型，验证！"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 推荐：就是一个分类，分类完了之后通过推荐算法转化为一个比例，最后比例一个排名\n",
    "降维数据处理：提升数据可靠性、降低噪声，经常把有噪声的数据，关联性强的数据去掉\n",
    "- 强化学习：是一套系统！\n",
    "\n",
    "## 生成对抗网络 GAN(干)\n",
    "- 生成数据，做假钞\n",
    "- 2个人的博弈\n",
    "- End2End\n",
    "- DeepDream  CycleGan 对抗生成网络\n",
    "- 正面照生成背面照\n",
    "\n",
    "\n",
    "### 目标检测\n",
    "- 车牌、arm芯片都可以跑\n",
    "- NMS 滑窗 若干框合成一个框，缩成一个框\n",
    "- 信用评分：连续(回归) 转换sigmod 分类问题！\n",
    "- 连续的事情搞不定，就把它拆成小块来做"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## GPU 和 CPU\n",
    "- GPU专门做浮点型运算，批量运算单元，不要显示东西所误导(显卡)\n",
    "- CPU小系统，寄存器，没有GPU好\n",
    "- Cuda 酷打 本身像C++ 把数据放到GPU运算，再取出的东西\n",
    "- OpenCL 丢掉AMD中运算\n",
    "- Tesorflow/keras/Caffe/MXNet/PyTorch\n",
    "- 1080Ti、Tesla \n",
    "- 地平线、寒武纪（中国），拿钱后买房子，冲出亚洲\n",
    "- 分布式数据\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分布式训练\n",
    "- C/S 客户端、服务器端\n",
    "- 把训练过程拆分为多机\n",
    "- 把训练责任进行细分\n",
    "  - 不同机器、不同分工\n",
    "- 要去压榨人的剩余价值！"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 80多个属性，那些属性重要，那些不重要！\n",
    "- 预测好到什么程度\n",
    "  - 学会看数据、查数据、学会看图比对数据\n",
    "  - 学会把空值NA补上\n",
    "\n",
    "## 开发过程\n",
    "1. 数据处理、清洗\n",
    "2. 数据集制作\n",
    "3. 机器学习\n",
    "4. 特征工程\n",
    "5. 对比几种机器学习方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4rc1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
